package com.brainhealth.customer.domain;

import java.util.List;
import java.util.Date;

import com.brainhealth.common.enums.PayStatus;
import com.brainhealth.common.enums.PayType;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.brainhealth.common.annotation.Excel;
import com.brainhealth.common.core.domain.BaseEntity;

/**
 * 积分商城订单对象 score_mall_order
 * 
 * @author wolong
 * @date 2023-11-01
 */
public class ScoreMallOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 积分商城订单表主键 */
    private Long id;

    /** 积分商城订单ID */
    @Excel(name = "积分商城订单ID")
    private String scoreMallOrderId;

    /** 会员ID表主键 */
    @Excel(name = "会员ID表主键")
    private Long customerId;

    /** 总积分 */
    @Excel(name = "总积分")
    private Long totalScoreAmount;

    /** 总金额 */
    @Excel(name = "总金额")
    private Long totalPayAmount;

    /** 交易流水号 */
    @Excel(name = "交易流水号")
    private String transactionNo;

    /** 汇付支付宝跳转地址 */
    @Excel(name = "汇付支付宝跳转地址")
    private String payUrl;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payTime;

    /** 支付类型(0微信 1支付宝 2银行卡) */
    @Excel(name = "支付类型(0微信 1支付宝 2银行卡)")
    private PayType payType;

    /**支付类型列表 (0微信 1支付宝 2银行卡) **/
    private List<Integer> payTypeList;

    /** 状态(0未支付 1已支付 2已退款 3已取消 4未完成) */
    @Excel(name = "状态(0未支付 1已支付 2已退款 3已取消 4未完成)")
    private PayStatus status;

    /** 删除标志(0：未删除 1：已删除) */
    @Excel(name = "删除标志(0：未删除 1：已删除)")
    private Integer yn;

    /** 积分商城订单明细表信息 */
    private List<ScoreMallOrderDetail> scoreMallOrderDetailList;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public String getScoreMallOrderId()
    {
        return scoreMallOrderId;
    }

    public void setScoreMallOrderId(String scoreMallOrderId)
    {
        this.scoreMallOrderId = scoreMallOrderId;
    }

    public void setCustomerId(Long customerId)
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setTotalScoreAmount(Long totalScoreAmount) 
    {
        this.totalScoreAmount = totalScoreAmount;
    }

    public Long getTotalScoreAmount() 
    {
        return totalScoreAmount;
    }
    public void setTotalPayAmount(Long totalPayAmount) 
    {
        this.totalPayAmount = totalPayAmount;
    }

    public Long getTotalPayAmount() 
    {
        return totalPayAmount;
    }
    public void setTransactionNo(String transactionNo) 
    {
        this.transactionNo = transactionNo;
    }

    public String getTransactionNo() 
    {
        return transactionNo;
    }
    public void setPayUrl(String payUrl) 
    {
        this.payUrl = payUrl;
    }

    public String getPayUrl() 
    {
        return payUrl;
    }
    public void setPayTime(Date payTime) 
    {
        this.payTime = payTime;
    }

    public Date getPayTime() 
    {
        return payTime;
    }

    public PayType getPayType()
    {
        return payType;
    }

    public void setPayType(PayType payType){this.payType=payType;}

    public List<Integer> getPayTypeList() {
        return payTypeList;
    }

    public void setPayTypeList(List<Integer> payTypeList) {
        this.payTypeList = payTypeList;
    }

    public void setStatus(Integer status)
    {
        this.payType = payType;
    }

    public PayStatus getStatus()
    {
        return status;
    }

    public void setStatus(PayStatus status)
    {
        this.status = status;
    }

    public void setYn(Integer yn)
    {
        this.yn = yn;
    }

    public Integer getYn() 
    {
        return yn;
    }

    public List<ScoreMallOrderDetail> getScoreMallOrderDetailList()
    {
        return scoreMallOrderDetailList;
    }

    public void setScoreMallOrderDetailList(List<ScoreMallOrderDetail> scoreMallOrderDetailList)
    {
        this.scoreMallOrderDetailList = scoreMallOrderDetailList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("scoreMallOrderId", getScoreMallOrderId())
            .append("customerId", getCustomerId())
            .append("totalScoreAmount", getTotalScoreAmount())
            .append("totalPayAmount", getTotalPayAmount())
            .append("transactionNo", getTransactionNo())
            .append("payUrl", getPayUrl())
            .append("payTime", getPayTime())
            .append("payType", getPayType())
            .append("payTypeList", getPayTypeList())
            .append("status", getStatus())
            .append("yn", getYn())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("scoreMallOrderDetailList", getScoreMallOrderDetailList())
            .toString();
    }
}
